package parameter.transfer;

public class Test {
	/*两种传参的应用以及不同
	 * 
	 * 按值传参调用方法后，实参不会随形参的变化而改变
	 * 
	 * 引用传参方法调用后；实参会随形参的变化而变化
	 * 现阶段的引用传参只有数组；后阶段还会出现其他的
	 * 
	 * */

	public static void main(String[] args) {
		int x=10;
		int y=20;
		int[] array= {4,5,6,7,8,9};
		System.out.println("===============调入方法之前=============");
		System.out.println("x的值为："+x+"  ，y的值为："+y);//x=10,y=20;
		System.out.print("遍历数组的值为:");
		for(int a=0;a<array.length;a++) {
			System.out.print(array[a]+" ");
		}System.out.println();
		
		one(x,y);
		two(array);
		System.out.println("===============调入方法之后=============");
		System.out.println("x的值为："+x+"  ，y的值为："+y);
		System.out.print("遍历数组的值为:");
		for(int a=0;a<array.length;a++) {
			System.out.print(array[a]+" ");
		}System.out.println();
		
		

	}
	private static void one(int a,int b) {
		/*
		 * 按值传参
		 * */
		System.out.println("**********按值传参对值操作之前*******************");
		System.out.println("x的值为："+a+"  ，y的值为："+b);
		a=b;
		b=a+b;
		System.out.println("**********按值传参对值操作之后*******************");
		System.out.println("x的值为："+a+"  ，y的值为："+b);
		
		
	}
	private static void two(int[] array) {
		/*
		 * 按引用传参
		 * */
		System.out.println("**********按引用传参对值操作之前*******************\"");
		System.out.print("遍历数组的值为:");
		for(int x=0;x<array.length;x++) {
			System.out.print(array[x]+" ");
		}System.out.println();
		
		System.out.println("**********按引用传参对值操作之后*******************\"");
		System.out.print("遍历数组的值为:");
		for(int x=0;x<array.length;x++) {
			if(array[x]%2==0) {
				array[x]*=2;
			}
			System.out.print(array[x]+" ");
		}System.out.println();
	}

}
